gtk4.git
6 years agodisplay: Stop using gdk_event_copy
Matthias Clasen [Sat, 15 Feb 2020 19:19:50 +0000 (14:19 -0500)]
display: Stop using gdk_event_copy

Events are effectively readonly in GDK now, so we can just
take a reference, no need for a copy.

6 years agowin32: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 18:23:55 +0000 (13:23 -0500)]
win32: Use event constructors

6 years agox11: Pass the right surface to the dnd filter
Matthias Clasen [Tue, 18 Feb 2020 05:19:26 +0000 (00:19 -0500)]
x11: Pass the right surface to the dnd filter

6 years agox11: Remove an unnecessary check
Matthias Clasen [Sat, 15 Feb 2020 15:45:28 +0000 (10:45 -0500)]
x11: Remove an unnecessary check

We are not creating GDK_NOTHING events anymore. Yay

6 years agox11: change event translator interface
Matthias Clasen [Sat, 15 Feb 2020 17:09:31 +0000 (12:09 -0500)]
x11: change event translator interface

Make the event translator return a new event, instead of
filling in a half-constructed one.

Update the two implementation in GdkX11Display and
GdkDeviceManagerXI2.

6 years agox11: Change the wm protocols filter api
Matthias Clasen [Sat, 15 Feb 2020 15:43:29 +0000 (10:43 -0500)]
x11: Change the wm protocols filter api

Instead of passing a half-constructed event and expect
it to be filled in, pass the surface as in argument, and
add an out argument for a newly constructed GdkEvent.

6 years agox11: Don't pass a GdkEvent to shape cache filters
Matthias Clasen [Sat, 15 Feb 2020 15:34:28 +0000 (10:34 -0500)]
x11: Don't pass a GdkEvent to shape cache filters

The filter functions never look at that event, and
we want to get out of the business of passing half-
constructed events around.

6 years agox11: Don't pass a GdkEvent to xsettings filters
Matthias Clasen [Sat, 15 Feb 2020 15:30:55 +0000 (10:30 -0500)]
x11: Don't pass a GdkEvent to xsettings filters

The filter functions never look at that event, and
we want to get out of the business of passing half-
constructed events around.

6 years agoevents: Drop GDK_DESTROY
Matthias Clasen [Sat, 15 Feb 2020 16:19:59 +0000 (11:19 -0500)]
events: Drop GDK_DESTROY

No backend is emitting GDK_DESTROY events anymore, so no
need to carry this around.

6 years agogtk: Stop handling GDK_DESTROY differently from GDK_DELETE
Matthias Clasen [Sat, 15 Feb 2020 16:11:13 +0000 (11:11 -0500)]
gtk: Stop handling GDK_DESTROY differently from GDK_DELETE

We don't have child windows anymore, so there is no difference.

6 years agox11: Don't generate GDK_DESTROY events
Matthias Clasen [Sat, 15 Feb 2020 16:12:22 +0000 (11:12 -0500)]
x11: Don't generate GDK_DESTROY events

GTK does not differentiate between GDK_DESTROY and GDK_DELETE
anyway.

6 years agox11: use event constructors
Matthias Clasen [Sat, 15 Feb 2020 14:33:53 +0000 (09:33 -0500)]
x11: use event constructors

This is not quite complete and only handles the
simple cases.

6 years agobroadway: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 00:07:09 +0000 (19:07 -0500)]
broadway: Use event constructors

Convert all of Broadways event handling to use the new
constructors.

6 years agowip: Use event constructors in the testsuite
Matthias Clasen [Sat, 15 Feb 2020 15:12:41 +0000 (10:12 -0500)]
wip: Use event constructors in the testsuite

This doesn't work because the constructors aren't exported,
so remove the gestures text temporarily, until we figure
out how to deal with it.

6 years agotextview: Stop using gdk_event_copy
Matthias Clasen [Sat, 15 Feb 2020 19:07:09 +0000 (14:07 -0500)]
textview: Stop using gdk_event_copy

6 years agomain: Use constructors instead of gdk_event_copy + rewriting
Matthias Clasen [Sat, 15 Feb 2020 19:06:43 +0000 (14:06 -0500)]
main: Use constructors instead of gdk_event_copy + rewriting

6 years agoimcontextsimple: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 14:55:58 +0000 (09:55 -0500)]
imcontextsimple: Use event constructors

6 years agowidget: Port emulation code to constructors
Matthias Clasen [Sat, 15 Feb 2020 00:29:12 +0000 (19:29 -0500)]
widget: Port emulation code to constructors

Use the new event constructors when generating events
for emulating presses.

6 years agowindow: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 15:13:19 +0000 (10:13 -0500)]
window: Use event constructors

6 years agomain: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 20:30:40 +0000 (15:30 -0500)]
main: Use event constructors

At the same time, stop setting child_surface in
crossing events. Nothing in GTK looks at it.

6 years agogdk: Use constructor for grab broken
Matthias Clasen [Sat, 15 Feb 2020 18:19:48 +0000 (13:19 -0500)]
gdk: Use constructor for grab broken

6 years agogdk: Use event constructors for dnd
Matthias Clasen [Sat, 15 Feb 2020 14:36:19 +0000 (09:36 -0500)]
gdk: Use event constructors for dnd

6 years agoevents: Drop x_root/y_root
Matthias Clasen [Fri, 14 Feb 2020 23:23:45 +0000 (18:23 -0500)]
events: Drop x_root/y_root

We are not using these fields anymore.

6 years agobroadway: Stop setting x_root/y_root in events
Matthias Clasen [Fri, 14 Feb 2020 23:19:13 +0000 (18:19 -0500)]
broadway: Stop setting x_root/y_root in events

These fields are not used in GTK anymore, and are
going away soon.

6 years agox11: Stop setting x_root/y_root in events
Matthias Clasen [Fri, 14 Feb 2020 23:18:10 +0000 (18:18 -0500)]
x11: Stop setting x_root/y_root in events

These fields are not used by GTK anymore and
will be going away soon.

6 years agox11: Stop relying on root coordinates in events
Matthias Clasen [Fri, 14 Feb 2020 23:17:13 +0000 (18:17 -0500)]
x11: Stop relying on root coordinates in events

The X11 dnd code was still using x_root/y_root in
GdkEventMotion in a couple of places. Stop doing so,
these field are going away soon.

6 years agoRemove root coords from the GdkDrop api
Matthias Clasen [Fri, 14 Feb 2020 23:15:38 +0000 (18:15 -0500)]
Remove root coords from the GdkDrop api

6 years agowayland: Clean up coordinate handling
Matthias Clasen [Fri, 14 Feb 2020 22:46:56 +0000 (17:46 -0500)]
wayland: Clean up coordinate handling

Get rid of the get_coordinates function and just
use the structs directly.

6 years agowayland: Use event constructors
Matthias Clasen [Fri, 14 Feb 2020 13:10:21 +0000 (08:10 -0500)]
wayland: Use event constructors

Convert all of Waylands event handling to use the new
constructors.

6 years agogdk: Add event constructors
Matthias Clasen [Fri, 14 Feb 2020 13:09:59 +0000 (08:09 -0500)]
gdk: Add event constructors

Add private API to construct events. This is a step towards
making events readonly, and not objects anymore.

The constructors here are sufficient to convert the Wayland
backend over. More may be added for other backends as needed.

Open issues:
 - history

6 years agoMake a11y testsuite pass
Matthias Clasen [Tue, 18 Feb 2020 00:44:07 +0000 (19:44 -0500)]
Make a11y testsuite pass

6 years agoMerge branch 'master' into 'master'
Matthias Clasen [Thu, 20 Feb 2020 19:08:45 +0000 (19:08 +0000)]
Merge branch 'master' into 'master'

build: gdk/wayland/cursor depends on wayland-client

See merge request GNOME/gtk!1453

6 years agobuild: gdk/wayland/cursor depends on wayland-client
Dominique Leuenberger [Thu, 20 Feb 2020 16:07:02 +0000 (17:07 +0100)]
build: gdk/wayland/cursor depends on wayland-client

On distros where wayland-client.h might not be directly in /usr/include
we fail to find the correct headers otherwise.

6 years agoscale: Remove useless extra local variable
Timm Bäder [Thu, 20 Feb 2020 09:30:14 +0000 (10:30 +0100)]
scale: Remove useless extra local variable

6 years agoscale: Remove unused member
Timm Bäder [Thu, 20 Feb 2020 09:22:29 +0000 (10:22 +0100)]
scale: Remove unused member

6 years agoemojichooser: Add style class to emoji toolbar
Timm Bäder [Wed, 19 Feb 2020 17:13:55 +0000 (18:13 +0100)]
emojichooser: Add style class to emoji toolbar

Closes #1013

6 years agofilechooserwidget: Fold function into only caller
Timm Bäder [Wed, 19 Feb 2020 08:18:25 +0000 (09:18 +0100)]
filechooserwidget: Fold function into only caller

6 years agofilechooserwidget: Use a proper GtkPopoverMenu
Timm Bäder [Wed, 19 Feb 2020 08:12:12 +0000 (09:12 +0100)]
filechooserwidget: Use a proper GtkPopoverMenu

Instead of a fake one where we add .menu to a normal popover. This makes
the menu look like other context menus.

6 years agofilechoosererrorstack: Set a layout manager
Timm Bäder [Wed, 19 Feb 2020 07:11:05 +0000 (08:11 +0100)]
filechoosererrorstack: Set a layout manager

Otherwise it doesn't know what to do with its child widget.

6 years agofilechooserwidget: Allow typing a location in recent mode
Timm Bäder [Wed, 19 Feb 2020 06:35:40 +0000 (07:35 +0100)]
filechooserwidget: Allow typing a location in recent mode

This is triggered by typing / or hitting Ctrl+L. Since we don't have a
visual indicator for this mode right now anyway, the reason for not
allowing it in recent mode cited in the comment just above the
early-exit is irrelevant.

Closes #2178

6 years agofilechooserwidget: Remove unused constants
Timm Bäder [Wed, 19 Feb 2020 06:35:29 +0000 (07:35 +0100)]
filechooserwidget: Remove unused constants

6 years agotext: Remove gtk_text_get_im_context()
Timm Bäder [Mon, 17 Feb 2020 14:46:41 +0000 (15:46 +0100)]
text: Remove gtk_text_get_im_context()

Unused.

6 years agodocs: Remove focus_tracking.txt
Timm Bäder [Mon, 17 Feb 2020 08:38:34 +0000 (09:38 +0100)]
docs: Remove focus_tracking.txt

All the info in there is outdated and not useful.

6 years agodocs: Remove developers.txt
Timm Bäder [Mon, 17 Feb 2020 08:37:49 +0000 (09:37 +0100)]
docs: Remove developers.txt

Everything in there has either been removed in the past or is outdated
information.

6 years agodocs: Remove dnd_internals.txt
Timm Bäder [Mon, 17 Feb 2020 08:36:52 +0000 (09:36 +0100)]
docs: Remove dnd_internals.txt

This is either already completely outdated or will be soon.

6 years agospinbutton: Remove manual queue_draw() calls
Timm Bäder [Tue, 18 Feb 2020 15:23:26 +0000 (16:23 +0100)]
spinbutton: Remove manual queue_draw() calls

Everything is automatically redrawn when changing the value, etc.

6 years agopopvermenu: Clarify css node docs
Timm Bäder [Tue, 18 Feb 2020 10:03:37 +0000 (11:03 +0100)]
popvermenu: Clarify css node docs

We add the .menu css class to the popover main node, not its contents
node.

6 years agoaboutdialog: Clarify docs and fix preconditions
Timm Bäder [Tue, 18 Feb 2020 09:36:04 +0000 (10:36 +0100)]
aboutdialog: Clarify docs and fix preconditions

6 years agomodelbutton: Un-select on mouse leave
Timm Bäder [Tue, 18 Feb 2020 09:02:38 +0000 (10:02 +0100)]
modelbutton: Un-select on mouse leave

This brings us closer to the old GtkMenuItem behavior and also makes
more sense.

6 years agoaboutdialog: Replace visited_links GList with GPtrArray
Timm Bäder [Tue, 18 Feb 2020 08:42:29 +0000 (09:42 +0100)]
aboutdialog: Replace visited_links GList with GPtrArray

6 years agoaboutdialog: Use new GtkStackPage API
Timm Bäder [Tue, 18 Feb 2020 08:31:32 +0000 (09:31 +0100)]
aboutdialog: Use new GtkStackPage API

6 years agostack: Add GtkStackPage:visible accessors
Timm Bäder [Tue, 18 Feb 2020 08:27:42 +0000 (09:27 +0100)]
stack: Add GtkStackPage:visible accessors

6 years agoMerge branch 'wip/xdg-popup-async-relayout' into 'master'
Benjamin Otte [Wed, 19 Feb 2020 18:57:14 +0000 (18:57 +0000)]
Merge branch 'wip/xdg-popup-async-relayout' into 'master'

Synchronous popup layout

See merge request GNOME/gtk!1241

6 years agoMerge branch 'ci-flatpak' into 'master'
Emmanuele Bassi [Wed, 19 Feb 2020 15:35:21 +0000 (15:35 +0000)]
Merge branch 'ci-flatpak' into 'master'

ci: Update flatpak jobs

See merge request GNOME/gtk!1451

6 years agoci: Update flatpak jobs
Emmanuele Bassi [Wed, 19 Feb 2020 15:04:58 +0000 (15:04 +0000)]
ci: Update flatpak jobs

The CI infrastructure was changed to run with fewer privileges, so we
need to adapt our Flatpak jobs to compensate.

See: https://mail.gnome.org/archives/desktop-devel-list/2020-February/msg00055.html

6 years agogdk/surface: Replace move_to_rect() with GdkPopupLayout based API
Jonas Ådahl [Sun, 16 Feb 2020 11:59:24 +0000 (12:59 +0100)]
gdk/surface: Replace move_to_rect() with GdkPopupLayout based API

Replace the gdk_surface_move_to_rect() API with a new GdkSurface
method called gdk_surface_present_popup() taking a new GdkPopupLayout
object describing how they should be laid out on screen.

The layout properties provided are the same as the ones used with
gdk_surface_move_to_rect(), except they are now set up using
GdkPopupLayout.

Calling gdk_surface_present_popup() will either show the popup at the
position described using the popup layout object and a new unconstrained
size, or reposition it accordingly.

In some situations, such as when a popup is set to autohide, presenting
may immediately fail, in case the grab was not granted by the display
server.

After a successful present, the result of the layout can be queried
using the following methods:

 * gdk_surface_get_position() - to get the position relative to its
   parent
 * gdk_surface_get_width() - to get the current width
 * gdk_surface_get_height() - to get the current height
 * gdk_surface_get_rect_anchor() - to get the anchor point on the anchor
   rectangle the popup was effectively positioned against given
   constraints defined by the environment and the layout rules provided
   via GdkPopupLayout.
 * gdk_surface_get_surface_anchor() - the same as the one above but for
   the surface anchor.

A new signal replaces the old "moved-to-rect" one -
"popup-layout-changed". However, it is only intended to be emitted when
the layout changes implicitly by the windowing system, for example if
the monitor resolution changed, or the parent window moved.

6 years agogdk/surface: Reset position after hiding
Jonas Ådahl [Wed, 19 Feb 2020 08:31:32 +0000 (09:31 +0100)]
gdk/surface: Reset position after hiding

The x and y position of GdkSurface is only valid when visible, so reset
them to their inital state after hiding.

6 years agowayland: Simplify logic deciding whether to use xdg_popup
Jonas Ådahl [Sun, 16 Feb 2020 15:42:52 +0000 (16:42 +0100)]
wayland: Simplify logic deciding whether to use xdg_popup

From a handful of hueristics and guess-work, to a single
`surface->surface_type == GDK_SURFACE_POPUP`.

6 years agowayland: Fix top-most-popup check
Jonas Ådahl [Sun, 16 Feb 2020 15:24:12 +0000 (16:24 +0100)]
wayland: Fix top-most-popup check

We can map a non-grabbing popup wherever, it's just the grabbing
popup-chain that needs to be ensured not to break any ordering rules.

Fix this by managing two lists; one of open popups, and another for
grabbing ones.

6 years agogdk: Move GdkGeometry declaration to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:32:26 +0000 (00:32 +0100)]
gdk: Move GdkGeometry declaration to gdktypes.h

6 years agogdk: Move GdkGravity to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:32:05 +0000 (00:32 +0100)]
gdk: Move GdkGravity to gdktypes.h

6 years agox11: Make gdk_surface_get_position() return relative position
Jonas Ådahl [Sat, 15 Feb 2020 23:28:01 +0000 (00:28 +0100)]
x11: Make gdk_surface_get_position() return relative position

The returned position should be relative to the parent surface, but
GdkSurface::x,y were only managed properly for O-R windows. This makes
it correct for regular windows too.

6 years agowayland: Simplify popup parent discovery
Jonas Ådahl [Mon, 10 Feb 2020 09:55:59 +0000 (10:55 +0100)]
wayland: Simplify popup parent discovery

Now popups surfaces are always created with the parent set, so we don't
need to implement vorious guess work to try to find what the parent
might be. Remove that code and just use GdkSurface::parent which is
where the parent set during construction ends up at.

6 years agowayland: Remove old "gdk-attached-grab-surface" hackery
Jonas Ådahl [Mon, 10 Feb 2020 08:56:18 +0000 (09:56 +0100)]
wayland: Remove old "gdk-attached-grab-surface" hackery

The corresponding code in gtk/ is long gone, so it's luckly unused these
days.

6 years agowayland/surface: Add per surface configuration event queues
Jonas Ådahl [Tue, 7 Jan 2020 16:13:22 +0000 (17:13 +0100)]
wayland/surface: Add per surface configuration event queues

Add event queues specifically for surface configuration events
(xdg_surface.configure, xdg_toplevel.configure, xdg_popup.configure etc)
so that a configuration can be completed without having side effects on
other surfaces. This will be used to synchronously configure specific
GdkSurfaces, as is needed by the Gtk layout mechanisms.

6 years agogdk/wayland/surface: Use dedicated bool for frame callback freezing
Jonas Ådahl [Tue, 10 Dec 2019 18:23:17 +0000 (19:23 +0100)]
gdk/wayland/surface: Use dedicated bool for frame callback freezing

The freezing is conditioned on various state, so lets make the thawing a
bit more robust. Without this there was a risk that we'd thaw too many
times if there was a frame callback requested while the conditions for
the freezing were not met.

6 years agowayland: Remove position method split
Jonas Ådahl [Wed, 24 Jul 2019 16:44:32 +0000 (18:44 +0200)]
wayland: Remove position method split

Position can only be done via gdk_surface_queue_relayout(); the legacy
way is no longer possible, so remove the legacy positioning code.

6 years agogdk/surface: Use enum type for surface type
Jonas Ådahl [Mon, 22 Jul 2019 20:27:37 +0000 (22:27 +0200)]
gdk/surface: Use enum type for surface type

6 years agotests/popover: Add check box for switching autohide prop
Jonas Ådahl [Mon, 22 Jul 2019 20:26:39 +0000 (22:26 +0200)]
tests/popover: Add check box for switching autohide prop

6 years agopopover: Unrealize when autohide prop changes
Jonas Ådahl [Wed, 24 Jul 2019 13:45:34 +0000 (15:45 +0200)]
popover: Unrealize when autohide prop changes

Changing the autohide property means the popover needs to be remapped.
Remapping may need user interaction, so lets just unrealize the popover
if the property changes, forcing the application to remap it should it
be shown again.

6 years agoMerge branch 'file-filter-name-property' into 'master'
Timm Bäder [Wed, 19 Feb 2020 07:43:51 +0000 (07:43 +0000)]
Merge branch 'file-filter-name-property' into 'master'

GtkFileFilter: Add a GObject property for the name

See merge request GNOME/gtk!376

6 years agoMerge branch 'icontheme-api' into 'master'
Matthias Clasen [Wed, 19 Feb 2020 01:50:49 +0000 (01:50 +0000)]
Merge branch 'icontheme-api' into 'master'

Icontheme api

Closes #2410

See merge request GNOME/gtk!1449

6 years agoicontheme: Update the api
Matthias Clasen [Tue, 18 Feb 2020 05:56:37 +0000 (00:56 -0500)]
icontheme: Update the api

Add properties, and use string arrays instead of lists.

Among other things, this renames gtk_icon_theme_list_icons
to gtk_icon_theme_get_icon_names.

Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2410
6 years agoMerge branch 'wip/otte/for-master' into 'master'
Matthias Clasen [Wed, 19 Feb 2020 01:18:04 +0000 (01:18 +0000)]
Merge branch 'wip/otte/for-master' into 'master'

debug: When debug-printing, treat NULL as the default display

See merge request GNOME/gtk!1450

6 years agodebug: When debug-printing, treat NULL as the default display
Benjamin Otte [Wed, 19 Feb 2020 00:20:19 +0000 (01:20 +0100)]
debug: When debug-printing, treat NULL as the default display

Otherwise we lose debug prints from all code that allows NULL displays.

6 years agoMerge branch 'wip/otte/dnd' into 'master'
Matthias Clasen [Tue, 18 Feb 2020 22:15:56 +0000 (22:15 +0000)]
Merge branch 'wip/otte/dnd' into 'master'

More DND rework

See merge request GNOME/gtk!1445

6 years agoMerge branch 'dialog-headerbar-type-annotation' into 'master'
Emmanuele Bassi [Tue, 18 Feb 2020 10:58:06 +0000 (10:58 +0000)]
Merge branch 'dialog-headerbar-type-annotation' into 'master'

GtkDialog: Add `type Gtk.HeaderBar` annotation to headerbar getter return value

See merge request GNOME/gtk!1447

6 years agoGtkDialog: Add `type Gtk.HeaderBar` annotation to headerbar getter return value
Sebastian Dröge [Tue, 18 Feb 2020 08:55:31 +0000 (10:55 +0200)]
GtkDialog: Add `type Gtk.HeaderBar` annotation to headerbar getter return value

6 years agocolorbutton: Fix drag source
Benjamin Otte [Tue, 18 Feb 2020 01:58:58 +0000 (02:58 +0100)]
colorbutton: Fix drag source

By running it in the capture phase, it will not be starved for events by
the button's click source and make drags actually start a color drag
operation.

6 years agoRemove gdk_content_provider_new_with_formats()
Benjamin Otte [Tue, 18 Feb 2020 01:02:34 +0000 (02:02 +0100)]
Remove gdk_content_provider_new_with_formats()

See the removal of gdk_content_provider_new_with_callback() for a
rationale.

6 years agotests: Modernize testdnd2
Benjamin Otte [Tue, 18 Feb 2020 01:01:52 +0000 (02:01 +0100)]
tests: Modernize testdnd2

6 years agodnd: Port the TreeModel machinery to GValue DND
Benjamin Otte [Tue, 18 Feb 2020 00:41:42 +0000 (01:41 +0100)]
dnd: Port the TreeModel machinery to GValue DND

6 years agoMerge branch 'text-emoji-history' into 'master'
Matthias Clasen [Mon, 17 Feb 2020 22:31:17 +0000 (22:31 +0000)]
Merge branch 'text-emoji-history' into 'master'

text: Treat Emoji insertion like clipboard

See merge request GNOME/gtk!1444

6 years agoplacessidebar: Modernize DND
Benjamin Otte [Mon, 17 Feb 2020 03:38:22 +0000 (04:38 +0100)]
placessidebar: Modernize DND

No more shooting pointers through pipes

6 years agonotebook: Use proper DND
Benjamin Otte [Mon, 17 Feb 2020 02:58:28 +0000 (03:58 +0100)]
notebook: Use proper DND

Actually use GValues for the DND operation instead of sending GBytes of
pointer addresses through pipes.

This is a bit complicated because we need to special-case rootwindow
drops, because they're handled on the source side, so we need a custom
ContentProvider.

6 years agonotebook: Move dnd scrolling via arrows to own drop target
Benjamin Otte [Mon, 17 Feb 2020 02:08:54 +0000 (03:08 +0100)]
notebook: Move dnd scrolling via arrows to own drop target

This removes excess code from the tab dnd machinery

6 years agodragdest: Handle NULL content formats everywhere
Benjamin Otte [Mon, 17 Feb 2020 02:04:37 +0000 (03:04 +0100)]
dragdest: Handle NULL content formats everywhere

NULL means we don't do content formats checks and accept everything.

We use this for notebook arrows or expanders that react to ongoing
drags.

6 years agocontentprovider: Add a union content provider
Benjamin Otte [Mon, 17 Feb 2020 01:21:13 +0000 (02:21 +0100)]
contentprovider: Add a union content provider

6 years agotext: Treat Emoji insertion like clipboard
Matthias Clasen [Mon, 17 Feb 2020 20:05:09 +0000 (15:05 -0500)]
text: Treat Emoji insertion like clipboard

Enter the Emoji inseration in the undo history.
Also, stop stashing away the selection when we
pop up the Emoji chooser, and use the selection
as-is when we insert the Emoji.

6 years agoplacessidebar: Don't claim to support text dnd
Benjamin Otte [Mon, 17 Feb 2020 01:20:43 +0000 (02:20 +0100)]
placessidebar: Don't claim to support text dnd

Because you don't. And never did.

6 years agodragdest: Make gtk_drop_target_new() args be transfer full
Benjamin Otte [Sun, 16 Feb 2020 18:52:17 +0000 (19:52 +0100)]
dragdest: Make gtk_drop_target_new() args be transfer full

Saves tons of code.

6 years agocolorbutton, colorswatch: Simplify DND
Benjamin Otte [Sun, 16 Feb 2020 17:48:45 +0000 (18:48 +0100)]
colorbutton, colorswatch: Simplify DND

- Use GDK_TYPE_RGBA and let GDK do the conversion from
  application-x-color
- Don't do extra mime type checks when accept() does that for us already

6 years agodragdest: Simplify function
Benjamin Otte [Sun, 16 Feb 2020 17:43:45 +0000 (18:43 +0100)]
dragdest: Simplify function

Make it obvious that the functions checks one condition and then the
other.

6 years agodnd: simplify code
Benjamin Otte [Sun, 16 Feb 2020 17:32:42 +0000 (18:32 +0100)]
dnd: simplify code

The old code did mimetype checks everywhere when type compatibility has
since been moved to the GtkDropTarget::accept signal.

So the code can now just assume a compatible mime type exists.

6 years agodnd: Remove gdk_content_provider_new_with_callback()
Benjamin Otte [Sun, 16 Feb 2020 15:22:37 +0000 (16:22 +0100)]
dnd: Remove gdk_content_provider_new_with_callback()

Content providers are meant to be immutable, apart from very special
cases, but in those cases they need to emit
gdk_content_provider_content_changed().

Having a constructor that just uses a get_func invites abuse of this
by not making developers aware of those requirments.
In fact, all users in GTK failed to do this.

Instead, code should use the GtkDragSource::prepare signal to create
content providers when needed.

The same problem exists with gdk_content_provider_new_with_formats(),
but this commit doesn't touch that.

6 years agotestdnd3: Use GValue dnd
Benjamin Otte [Sun, 16 Feb 2020 13:29:22 +0000 (14:29 +0100)]
testdnd3: Use GValue dnd

6 years agocontentprovider: Add gdk_content_provider_new_typed()
Benjamin Otte [Sun, 16 Feb 2020 13:24:03 +0000 (14:24 +0100)]
contentprovider: Add gdk_content_provider_new_typed()

Gets around the boilerplate required to create and initialize a GValue
by having this function doing it via G_VALUE_COLLECT().

6 years agowayland: Destroy the offer on gdk_drop_finish()
Benjamin Otte [Sun, 16 Feb 2020 13:14:27 +0000 (14:14 +0100)]
wayland: Destroy the offer on gdk_drop_finish()

Otherwise the compositor won't be aware the dnd failed and will in turn
not notify the drag source.

6 years agodrop: Add a state machine for tracking events
Benjamin Otte [Sun, 16 Feb 2020 05:08:27 +0000 (06:08 +0100)]
drop: Add a state machine for tracking events

6 years agowidget: Fix namespacing problem
Benjamin Otte [Sun, 16 Feb 2020 19:05:05 +0000 (20:05 +0100)]
widget: Fix namespacing problem

In Vala and JS at least, gtk_widget_get_css_name() and
gtk_widget_class_get_css_name() are resolved to
GtkWidget.get_css_name().

To avoid this problem, we rename the class version.